﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using N2.Details;
using System.ComponentModel;
using Dinamico.Models;

namespace Dinamico.Models
{
    [N2.PartDefinition("PartProductOfferGoogle",
        Description = "PartPersonGoogle",
        ToolTip = "Part Person Google",
        SortOrder = 41,
        IconUrl = "~/upload/img/icons/product_group2.png")]
    [N2.Integrity.AvailableZone("Oferty","Offers")]
    public class PartProductOfferGoogleModel : ContentPart
    {
        [EditableText("Stara Cena produktu tekst.", 0)]
        public virtual string OldPriceText { get; set; }

        [EditableText("Cena produktu. Liczba zmiennoprzecinkowa. Jako separatora można użyć kropki lub przecinka.",0)]
        public virtual string  Price  { get; set; }
	    [EditableText("Waluta, w której podano cenę produktu, zapisana w trzyliterowym formacie ISO.",1)]
        public virtual string  Currency 	 { get; set; }
        #region Date
        [EditableText("Data (w formacie ISO np:2020-11-05), po której cena przestanie obowiązywać. (Opis produktu może nie być wyświetlany, jeśli właściwość priceValidUntil wskazuje datę w przeszłości).", 1)]
        public virtual string  PriceValidUntil  { get; set; }
       
        [EditableText("Tekst do daty np: wyprzedaz do 5 litopada! ", 1)]
        public virtual string PriceValidUntilText { get; set; }
        #endregion

        [EditableText("Sprzedawca produktu. Może zawierać informacje o osobie lub organizacji.",2)]
        public virtual string  Seller 	 { get; set; }

        [EditableText("Liczba produków dostępnych w tej ofercie.",3)]
        public virtual string Quantity  { get; set; }

        #region url
        [EditableLink("URL strony internetowej produktu (zawierającej ofertę). (Nie używaj właściwości offerURL do zaznaczania treści na samej stronie produktu).",4)]
        public virtual string OfferURL  { get; set; }

        [EditableLink("URL strony tekst", 5)]
        public virtual string OfferURLText { get; set; }
        #endregion

        #region Condition
        [EditableText("stan, atrybut content musi mieć jedną z następujących rozpoznawanych wartości:new,used,refurbished", 6)]
        public virtual string Condition { get; set; }
        [EditableText("Odpowiedni tekst dla:new,used,refurbished,", 7)]
        public virtual string ConditionText { get; set; }

        //public enum ConditionTypeEnum
        //{
        //    [DescriptionAttribute("new")]
        //    New = 0,
        //    [DescriptionAttribute("used")]
        //    Used = 1,
        //    [DescriptionAttribute("refurbished")]
        //    refurbished = 2,
        //}
        //[EditableEnum("nowy,uzywany,odnowiony", 50, typeof(ConditionTypeEnum))]
        //public ConditionTypeEnum ConditionTypeEnumList
        //{
        //    get
        //    {
        //        return (ConditionTypeEnum)(GetDetail("ConditionTypeEnumList") ?? ConditionTypeEnum.New);
        //    }
        //    set
        //    {
        //        SetDetail("ConditionTypeEnumList", value);
        //    }
        //}
        #endregion

        #region Avaibility
        [EditableText("Dostepnosc:in_stock,out_of_stock,instore_only,preorder", 8)]
        public virtual string Availability  { get; set; }
        [EditableText("Dostepnosc:in_stock,out_of_stock,instore_only,preorder", 9)]
        public virtual string AvailabilityText { get; set; }	
        //out_of_stock
        //in_stock
        //instore_only
        //preorder
        //public enum AvailabilityTypeEnum
        //{
        //    [DescriptionAttribute("in_stock")]
        //    In_stock = 0,
        //    [DescriptionAttribute("out_of_stock")]
        //    Out_of_stock = 1,
        //    [DescriptionAttribute("instore_only")]
        //    Instore_only = 2,
        //    [DescriptionAttribute("preorder")]
        //    Preorder = 3,
        //}
        //[EditableEnum("w sprzedazy, barak, tylko w sklepie,na zamowienie", 50, typeof(AvailabilityTypeEnum))]
        //public AvailabilityTypeEnum AvailabilityTypeEnumList
        //{
        //    get
        //    {
        //        return (AvailabilityTypeEnum)(GetDetail("AvailabilityTypeEnumList") ?? AvailabilityTypeEnum.In_stock);
        //    }
        //    set
        //    {
        //        SetDetail("AvailabilityTypeEnumList", value);
        //    }
        //}
        #endregion

        #region Identifier
        [EditableText("Identyfikator produktu. Google zaleca uwzględnienie właściwości brand i co najmniej jednej właściwości identifier przy każdym produkcie.", 255)]
        public virtual string Identifier { get; set; }
        [EditableText("Rozpoznawane są następujące typy:asin,isbn,mpn,sku,upc,", 7)]
        public virtual string IdentifierType { get; set; }

        //public enum IdentifierTypeEnum
        //{
        //    [DescriptionAttribute("asin")]
        //    asin = 0,
        //    [DescriptionAttribute("isbn")]
        //    isbn = 1,
        //    [DescriptionAttribute("mpn")]
        //    mpn = 2,
        //    [DescriptionAttribute("sku")]
        //    sku = 3,
        //    [DescriptionAttribute("upc")]
        //    upc = 4
        //}
        //[EditableEnum("Rozpoznawane są następujące typy:asin,isbn,mpn,sku,upc,", 50, typeof(IdentifierTypeEnum))]
        //public IdentifierTypeEnum IdentifierTypeEnumList
        //{
        //    get
        //    {
        //        return (IdentifierTypeEnum)(GetDetail("IdentifierTypeEnumList") ?? IdentifierTypeEnum.sku);
        //    }
        //    set
        //    {
        //        SetDetail("IdentifierTypeEnumList", value);
        //    }
        //}

        #endregion

        [EditableText("Sprzedawany przedmiot. Zazwyczaj element zawiera zagnieżdżony produkt, ale może również zawierać elementy innego typu lub tekst.", 1)]
        public virtual string ItemOffered { get; set; }
    }
}